package com.fuershiye.woman.monitor.constants;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fuershiye.woman.monitor.beans.IdName;
import com.google.common.collect.Lists;

/** 数据显示的时候,显示的级别
 * 完成困难,未完成,完成目标,超出预期
 * 1，校对预警颜色值
 * 2，预警类型分6种，
 *      a提前达标（绿色）
 *      b预期可达标（蓝色）
 *      c预期达标困难（黄色）
 *      d无法完成（红色）
 *      e空值（紫色）就是空格
 *      f暂无数据（灰色）就是指纯文字
 * */
public enum ShowLevel {

    //原来只有两种
//	UN_REACH_LOT(1, "完成困难"),
//	UN_REACH(2, "未完成"),
//	REACH(3, "完成目标"),
//	REACH_LOT(4, "超出预期"),

    //空值、空格
    SCORE_0(0, "空值"),
    //暂无数据
    SCORE_5(5, "暂无数据"),

    SCORE_10(10, "红色"),
    SCORE_20(20, "橙色"),
    SCORE_30(30, "黄色"),

    //按照指标规则，当年完成。如有目标值，还没有完成五年计划设定的目标值
    SCORE_40(40, "浅绿"),

    //有目标值，且当年上报数值，完成了五年计划设定的目标值
    SCORE_50(50, "深绿"),

	;

    private final Integer code;
    private final String name;

    private static final Map<Integer,ShowLevel> lookupByCode=new HashMap<Integer, ShowLevel>();
    private static final List<IdName> allIdName = Lists.newArrayList();

    static {
        for(final ShowLevel r: EnumSet.allOf(ShowLevel.class)){
            lookupByCode.put(r.getCode(), r);
        }
    }
    
    static {
    	for(final ShowLevel r: EnumSet.allOf(ShowLevel.class)){
    		allIdName.add(new IdName(r.getCode(), r.getName()));
    	}
    }
    
    static {
    	for(final ShowLevel r: EnumSet.allOf(ShowLevel.class)){
    		lookupByCode.put(r.getCode(), r);
    	}
    }

    ShowLevel(Integer code, String name) {
        this.code = code;
        this.name = name;
    }

    public Integer getCode() {
        return code;
    }

    public String getName() {
        return name;
    }

    public static ShowLevel getByCode(int code){
        return lookupByCode.get(code);
    }
    
    public static String getNameByCode(int code){
    	if(lookupByCode.containsKey(code)){
        	return lookupByCode.get(code).name;
    	}
    	return "";
    }
    
    public static Map<Integer,ShowLevel> getAll(){
    	return lookupByCode;
    }
    
    public static List<IdName> getAllIdName(){
    	return allIdName;
    }
    
}
